Home 

IBM 5150  -  Some test code for U33


This is code to go into ROM U33 on an IBM 5150 (IBM PC) motherboard.

The IBM 5150 has special ROM requirements - see here.

The intended users of these tests are:
• People who know what they are doing (e.g. why they are executing a particular test, and the significance of the test's passing or failure); and
• People who are under the expert guidance of others, directed to execute one or more of these tests, and feeding back the result/s.



TEST5055

All that the code does is send the byte of {55} to parallel (LPT) ports 378, 278, and 3BC, then it halts the CPU.

You can observe the 55 by using a parallel (LPT) port POST code reader (example) connected one of the aforementioned parallel (LPT) ports.

Details are in the TEST5055.TXT file within the ZIP download file.

Download:  TEST5055.zip


TEST5000

All that the code does is send the 4 bytes of {00}{FF}{55}{AA}, in that order, to parallel (LPT) ports 378, 278, and 3BC, then it halts the CPU.

You can observe those bytes by using a parallel (LPT) port POST code reader (example) connected one of the aforementioned parallel (LPT) ports.

Details are in the TEST5000.TXT file within the ZIP download file.

Download:  TEST5000.zip


TEST5046

Sets up the 8253 and 8255 chips in a way that results in a continuous tone from the speaker.

Typically, used with certain test equipment to diagnose why the speaker does not beep.

Details are in the TEST5046.TXT file within the ZIP download file.

Download:  TEST5046.zip


TEST5060

The code, in a loop:

Step 1:  Writes 55h to motherboard address 00000.
Step 2:  Reads back motherboard address 00000.
Step 3:  Writes AAh to motherboard address 00000.
Step 4:  Reads back motherboard address 00000.

The intention is, for diagnostic purposes, to use this code together with a logic analyser, the analyser connected to various pins of the RAM chips in bank 0.

Details are in the TEST5060.TXT file within the ZIP download file.  Included is a capture using a logic analyser.

Download:  TEST5060.zip


TEST5065

PURPOSE:  To detect 'stuck' bits on the address bus and the external address bus.

The code, in a loop:
Step 1:  Reads motherboard address 00000  (00000000000000000000 binary).
Step 2:  Reads motherboard address FFFFF  (11111111111111111111 binary).

Reference diagram at here.

The intention is, for diagnostic purposes, to use this code together with a logic probe, the probe used to:
Step 1: Verify that the address bus lines of A0 to A19 are toggling/pulsing.
Step 2: Verify that the external address bus lines of XA0 to XA12 are toggling/pulsing.

Details are in the TEST5065.TXT file within the ZIP download file.

Download:  TEST5065.zip


TEST5066

PURPOSE:  To detect 'shorted' adjacent bits on the address bus and the external address bus.

Reference diagram at here.

The code, in a loop:
Step 1:  Reads motherboard address 55555  (01010101010101010101 binary).
Step 2:  Reads motherboard address AAAAA  (10101010101010101010 binary).

55555 and AAAAA chosen because they will reveal if any adjacent bits are 'shorted'.   ( Strickly speaking, only one of those addresses is required for an adjacent bits test. )

An example of adjacent bits is A0 and A1.
An example of adjacent bits is A1 and A2.
An example of adjacent bits is A2 and A3.

Using a logic analyser:
1. On the address bus, verify that two of the addresses seen are 55555 and AAAAA, i.e. all adjacent bits are at different logic states.
2. On the external address bus, verify that two of the addresses seen are 1555 and AAA, i.e. all adjacent bits are at different logic states.

An oscilloscope with more than one channel is an alternative test device.

Details are in the TEST5066.TXT file within the ZIP download file.  Included is a capture of the address bus using a logic analyser.

Download:  TEST5066.zip


TEST5067

PURPOSE:  To test the [address bus to memory address bus multiplexer], and associated circuitry.

Reference diagram for 16KB-64KB type motherboard at here.
Reference diagram for 64KB-256KB type motherboard at here.

In a loop, the code:
Step 1: Reads motherboard address 055AAh.
Step 2: Reads motherboard address 0AA55h.

Details are in the TEST5067.TXT file within the ZIP download file.  Included is a capture of the memory address bus on a 64KB-256KB motherboard using a logic analyser.

Download:  TEST5067.zip


TEST5077

PURPOSE:  To crudely test addressing of the U33 ROM.

Tests 32 addresses, spanned between the motherboard addresses of FE000 and FFFFF, the 8 KB sized address range that the BIOS ROM (socket U33) of the IBM 5150 occupies.

Outputs progress and good/bad status to parallel (LPT) ports 378, 278, and 3BC.
That progress and good/bad status can be observed by you using a parallel (LPT) port POST code reader (example) connected one of the aforementioned parallel (LPT) ports.

This test code does not use RAM.  I.e. The RAM subsystem does not need to be operational.

Details are in the TEST5077.TXT file within the ZIP download file.

The ZIP download file includes a video (about 2 minutes long) that shows what is expected to be seen on the parallel (LPT) port POST code reader.

Download:  TEST5077.zip


TEST5083  (PB3 pin of 8255 + relay)

About every two seconds, the PB3 pin (pin 21) of the IBM 5150 motherboard's 8255 chip is toggled between the HIGH/LOW states.
The toggling never stops.
The toggling can be observed by monitoring the PB3 pin via a logic probe, or via a multimeter (in 'DC voltage' mode).
Because the PB3 pin activates/deactivates the motherboard's relay, you can also observe (see and hear) the toggling via the relay.

This test code does not use RAM.  I.e. The RAM subsystem does not need to be operational.

Details are in the TEST5083.TXT file within the ZIP download file.

The ZIP download file includes a video that shows what is expected to be seen if a multimeter is used.
The ZIP download file includes a video that shows the contacts in the relay moving.

Download:  TEST5083.zip


TEST5082  (PB2 pin of 8255)

Just like TEST5083, except:
- PB2 pin (pin 20) of 8255 chip, instead of PB3.
- The relay will not change state.

Download:  TEST5082.zip


TEST5099  (BASE 16K RAM test)

TEST5099 should no longer be required.

Why?  As of version 3.4, Ruud's Diagnostic ROM will detect RAM addressing issues.

See note 1 below.

PREREQUISITE:  TEST5082 and TEST5083 pass.
PREREQUISITE:  Motherboard is fit enough to generate speaker beeps.

This is a modified version of the 10/27/82 (27OCT82) revision of BIOS ROM for the IBM 5150 (IBM PC) motherboard.

Its use answers the following two questions:

1.  Is the POST (power-on self test) in the 10/27/82 BIOS ROM for the IBM 5150 motherboard, starting and getting as far as the BASE 16KB RAM test ?
2.  If the answer to question 1 is yes, is that test passing or failing ?

The answers are signalled to you via two ways:
- The speaker; and
- The PB2/PB3 pins of the motherboard's 8255 chip.

This test code is testing RAM.  So of course, this test code purposely does use RAM; it only tests it.

More detail is in the TEST5099.TXT file within the ZIP download file.

Download:  TEST5099.zip




Note 1 • The POST within the IBM BIOS ROM detects some cases of addressing problems in RAM.
• Supersoft/Landmark Diagnostic ROM does not.
Early versions of Ruud's Diagnostic ROM do not.

And that was the primary reason why TEST5099 was created; because the Supersoft/Landmark Diagnostic ROM and Ruud's Diagnostic ROM were not detecting the particular RAM addresing issues that the POST in the IBM BIOS does.

But now, Ruud's Diagnostic ROM (of version 3.4 and later) will, as well as detecting additional RAM addressing problems beyond what the POST in the IBM BIOS does.